package dht.tools;

import java.math.BigInteger;
import java.util.ArrayList;

import dht.data.Contexte;
import dht.data.TabBigInteger;
import dht.node.Node;

public abstract class OperationsZone {
	
	public static boolean isInZone(TabBigInteger t,ArrayList<Couple<BigInteger>> zone) {
		for (int i=0;i<zone.size();i++) {
			if (t.getValue(i).compareTo(zone.get(i).getElem1())< 0 || t.getValue(i).compareTo(zone.get(i).getElem2())> 0) {
				return false;
			}
		}
		return true;
	}
	
	/**
	 * Fonction de verification si une donee est dans les contextes non fusion
	 * @param t les coordonees de la donnee
	 * @return -1 si n'est pas dedans, l'index dans les contextes sinon.
	 */
	public static int IsInContexteNonFusion(TabBigInteger t) {
		int j=-1;
		synchronized (Node.contexteNonFusion) {
			for (Contexte contextes : Node.contexteNonFusion) {
				if (isInZone(t, contextes.getZoneLocale())) {
					j++;
					return j;
				}
				else {
					j++;
				}
			}
		}
		return j;
	}
}
